<?php

// ------------------------------------------------------------------------
// |@Author       : Jarmin <edshop@qq.com>
// |@----------------------------------------------------------------------
// |@Date         : 2025-04-25 10:54:44
// |@----------------------------------------------------------------------
// |@LastEditTime : 2025-04-25 15:58:30
// |@----------------------------------------------------------------------
// |@LastEditors  : Jarmin <jarmin@ladmin.cn>
// |@----------------------------------------------------------------------
// |@Description  : 插件中间件
// |@----------------------------------------------------------------------
// |@FilePath     : Addons.php
// |@----------------------------------------------------------------------
// |@Copyright (c) 2025 http://www.ladmin.cn   All rights reserved.
// ------------------------------------------------------------------------

declare(strict_types=1);

namespace think\addons\middleware;

use think\App;
use think\Request;
use think\Response;

/**
 * 插件中间件
 *
 * 处理插件相关的中间件逻辑，包括：
 * 1. 插件中间件事件触发
 */
class Addons
{
    /**
     * 应用实例
     * @var App
     */
    protected App $app;

    /**
     * 构造函数
     *
     * @param App $app 应用实例
     */
    public function __construct(App $app)
    {
        $this->app = $app;
    }

    /**
     * 中间件处理方法
     *
     * @param Request $request 请求对象
     * @param \Closure $next 下一个中间件
     * @return Response
     */
    public function handle(Request $request, \Closure $next): Response
    {
        // 触发插件中间件事件
        $this->app->event->trigger('addon_middleware', $request);

        return $next($request);
    }
}
